package com.atguigu.study.listener;

import cn.hutool.core.util.IdUtil;
import dev.langchain4j.model.chat.listener.ChatModelErrorContext;
import dev.langchain4j.model.chat.listener.ChatModelListener;
import dev.langchain4j.model.chat.listener.ChatModelRequestContext;
import dev.langchain4j.model.chat.listener.ChatModelResponseContext;
import dev.langchain4j.model.chat.request.ChatRequest;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author Taeyang
 * @date 2025/5/9
 */
@Slf4j
public class TestChatModelListener implements ChatModelListener {

    @Override
    public void onRequest(ChatModelRequestContext requestContext) {
        // onRequest配置的k：v键值对，在onResponse阶段可以获取，上下文传递参数使用
        String uuidValue = IdUtil.simpleUUID();
        requestContext.attributes().put("TraceID-java0923", uuidValue);
        log.info(">>>>>>>>>>>>>>请求参数requestContext：{}", requestContext + "\t" + uuidValue);
    }

    @Override
    public void onResponse(ChatModelResponseContext responseContext) {
        Object object = responseContext.attributes().get("TraceID-java0923");
        log.info(">>>>>>>>>>>>>>返回结果responseContext：{}", object);
    }

    @Override
    public void onError(ChatModelErrorContext errorContext) {
        log.error("请求异常ChatModelErrorContext：{}", errorContext);
    }
}
